#define _CRT_SECURE_NO_WARNINGS 1  

#include <iostream>
#include <list>
#include <vector>
#include <array>
#include <deque>
#include <queue>
using namespace std;

#include "stack.h"
#include "queue.h"
#include "priority_queue.h"

void test1()
{
	WNF::mystack<int> st;
	WNF::myqueue<int> q;

/*	q.push(1);
	q.push(2);
	q.push(3);
	q.push(4);
	q.push(5);
	q.push(6);*/	
	
	st.push(1);
	st.push(2);
	st.push(3);
	st.push(4);
	st.push(5);
	st.push(6);

	//for (int i = 0; i < 6; i++)
	//{
	//	cout << q.front() << ' ';
	//	q.pop();
	//}

	for (int i = 0; i < 6; i++)
	{
		cout << st.top() << ' ';
		st.pop();
	}
}

class A
{
public:
	A()
		:_a(1000)
	{}
	void print()
	{
		cout << _a << endl;
	}

private:
	int _a;
};

class B
{
public:
	B()
	{}

	void print()
	{
		_b.print();
	}


private:
	A _b;
};

void test2()
{
	vector<int> v = { 1100,232,43,2,6,9,8,4,5 };
	WNF::priority_queue<int,vector<int>,WNF::Greater<int>> pq(v.begin(),v.end());

	//pq.push(100);
	//pq.push(10);
	//pq.push(60);
	//pq.push(79);
	//pq.push(89);
	//pq.push(1);
	//pq.push(22);
	//pq.push(23);
	while (!pq.empty())
	{
		cout << pq.top() << ' ';
		pq.pop();
	}
}

void test3()
{
	B b;
	b.print();
}

void test4()
{

}

int main()
{
	/*test2();*/
	priority_queue<int> q1;
	
	q1.push(2);
	q1.push(3);
	q1.push(1);
	q1.push(4);
	
	while (!q1.empty())
	{
		cout << q1.top() << endl;
		q1.pop();
	} 
	return 0;
}